草庐IT

xcode - 仅公开便利 init 的子类化类

全部标签

java - 我有一个带有 @ExceptionHandler 的父类和一个带有自己版本的子类。我收到一个不明确的方法错误

父级:@ExceptionHandler(NoUserException.class)protectedModelAndViewhandleException(NoUserExceptione){Mapmodel=newHashMap();model.put(ModelKeys.HOST_KEY,"message");returnnewModelAndView("noAccess",model);}child:@ExceptionHandler(NoUserException.class)protectedvoidhandleException(NoUserExceptione,Htt

java - 多级继承子类调用 'grand'父函数

这个问题在这里已经有了答案:Whyissuper.super.method();notallowedinJava?(22个答案)关闭9年前。publicclassGrandParent{publicvoidwalk(){...}}publicclassParent{publicvoidwalk(){...}}publicclassChild{publicvoidwalk(){//HereinsomecasesIwanttousewalkmethodofGrandParentclass}}现在在Child.walk()中,我只想在某些情况下使用GrandParent.walk()。我怎样

java - 如何判断一个类是否是其他类的子类?

我想检查一个类对象是否代表其他类的子类例如Classclass1=Class.forName("Class1");Classclass2=Class.forName("Class2");if(class1.isSubClassOf(class2))//fakemethosisSubClassOf{//dosth}如何实现这个isSubClassOf方法? 最佳答案 Class.isAssignableFrom()或多或少提供了您想要的东西,尽管它也处理接口(interface),因此可能需要做更多的额外工作以确保它是一个子类,无论是

java - 如何模拟从抽象类继承的 protected 子类方法?

如何使用Mockito或PowerMock模拟一个由子类实现但继承自抽象父类(superclass)的protected方法?换句话说,我想在模拟“doSomethingElse”的同时测试“doSomething”方法。抽象父类(superclass)publicabstractclassTypeA{publicvoiddoSomething(){//CallsforsubclassbehaviordoSomethingElse();}protectedabstractStringdoSomethingElse();}子类实现publicclassTypeBextendsTypeA{

java - sun.misc.Unsafe 是否在 JDK9 中公开?

我刚刚尝试了JDK9并发现sun.misc.Unsafe现在不包含本地方法,而是将它们委托(delegate)给一些jdk.internal。misc.Unsafe,例如:@ForceInlinepublicintgetInt(Objecto,longoffset){returntheInternalUnsafe.getInt(o,offset);}反过来,最新的看起来实际上像旧的sun.misc.Unsafe,但现在这些方法用一些注释进行了注释:@HotSpotIntrinsicCandidatepublicnativevoidputObject(Objecto,longoffset

java - 我可以静态导入私有(private)子类吗?

我有一个私有(private)的枚举,不会在类外公开。无论如何我可以做那种类型的静态导入,这样我就不必每次都输入枚举类型了吗?或者有更好的写法吗?示例:packagekip.test;importstatickip.test.Test.MyEnum.*;//compileerrorpublicclassTest{privatestaticenumMyEnum{DOG,CAT}publicstaticvoidmain(String[]args){MyEnumdog=MyEnum.DOG;//thisworksbutIdon'twanttotype"MyEnum"MyEnumcat=CAT

java - 为什么Java中可以将父类(super class)初始化为子类?

简而言之,这是如何以及为什么可能的:Objectobj=newMyClass();Object是所有对象的父类(superclass),因此MyClass是Object的子类。一般来说,在Java中,为什么可以在父类中使用子类的构造函数?我明白它怎么可能反过来,因为子类拥有父类的所有变量/方法,所以当你初始化它们时,你只是在初始化父构造函数中指定的变量,这些变量按定义存在于child。问题是,当你反过来时,它不一定是真的。子项可以拥有父项没有的变量,那么当父项一开始甚至没有变量时,如何将子项构造函数与父项一起使用?这个特性在开发中有什么用?我想如果你想要一个B类的实例,你会把它声明为B

java - 公开类,但对 JAR 文件保持私有(private)

有没有办法使Java类公开但仅对JAR文件公开?也就是,它不是私有(private)包,而是公共(public)包,但不是JAR公共(public)包?假设我有这样的结构:project/package1/One.javapackage2/Two.javapackage3/Three.java由于3个.java文件位于不同的包中,因此我需要将其公开。但是有没有办法让它们只对包含该项目的JAR公开?这样如果另一个项目导入JAR,它就看不到某些公共(public)类/字段? 最佳答案 使用项目Jigsaw在Java9中,您可以完全做到这

java - 在 Java 中,如果子类用实例子变量隐藏静态父变量,那么继承方法将使用哪个变量?

这可能是一件坏事,如CanparentandchildclassinJavahavesameinstancevariable?中所讨论的那样.(如果更改父变量名称怎么办?那么它将不再被隐藏。)但是,我仍然很好奇静态/非静态不同的变量是否会相互隐藏。一方面,我希望它们是相同的变量名,因此会被隐藏,但另一方面,编译器似乎可能会根据静态来区分两者。 最佳答案 根据Java语言规范:如果该类声明了一个具有特定名称的字段,则该字段的声明被认为隐藏了父类(superclass)和该类的超接口(interface)中具有相同名称的任何和所有可访问

java - 父类(super class)和子类都有自己的接口(interface)

以下可以吗?(请记住,我没有编写类的主体,也没有编写接口(interface);-))abstractclassSuperClassimplementsSuperInterfaceclassSubClassextendsSuperClassimplementsSubInterface或者这通常被认为是不好的做法?让我感到奇怪的是,以下内容不起作用:ListmyList;...for(SuperInterfacesi:myList){...} 最佳答案 不好也不坏。SubClass在这里实现了SuperInterface和SubInt